package fifth.代码块;

/**
 * 代码块分为四种：
 * 普通代码块 构造块 静态代码块 同步代码块 其中同步代码块在多线程部分说
 * 普通代码块：直接在方法或者是语句中定义的代码块
 * 构造块：写在类中的代码块
 */
public class 构造块 {
    public static void main(String[] args) {
        //实例化对象
        new Demo();
        new Demo();
        new Demo();

    }
}

class Demo {
    {   // 定义构造快
        System.out.println("1.构造块");
    }

    public Demo() { //定义构造方法
        System.out.println("2.构造方法");
    }
}

/*
最后输出：
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=52829:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 fifth.代码块.构造块
1.构造块
2.构造方法
1.构造块
2.构造方法
1.构造块
2.构造方法

以上可以看出：
构造块优先于构造方法
每次实例化对象都会执行构造块中的代码，会执行多次

 */